Apparatus for dot matrix recording

ABSTRACT

A dot matrix recording system records a wide range of gray levels without compromising recording resolution. Resolution is maintained by using a relatively small dot matrix, preferably a 2 by 2 matrix, for representation of the graphic information at a point within an image being reproduced. When adjacent points within the image have the same optical density, then the matrix representation thereof is altered from point to point so as to produce a matrix of effectively increased size. The larger matrix or matrix group may comprise 4 of the 2 by 2 matrices positioned in a square arrangement. Thus when two horizontally adjacent points within an image have the same optical density and are situated immediately above two other points having the same optical density, then the four-point area is represented by a matrix group comprising a total of 16 matrix cells arranged in a 4 by 4 pattern. Such an arrangement permits recording a gray scale comprising 17 gray levels from white to black, while preserving the resolution afforded by the smaller 2 by 2 matrix. A further gray scale extension is obtained by a &#34;special case&#34; technique wherein the 2 by 2 matrices are combined into a rectangular matrix group which is 2 matrices high by 4 or 6 matrices wide for a total of 32 or 48 matrix cells.

CROSS REFERENCE TO RELATED APPLICATION

This application is a continuation-in-part of copending U.S. applicationSer. No. 420,639, filed Nov. 30, 1973, now abandoned.

BACKGROUND OF THE INVENTION

This invention relates to reproduction of a range of gray levels asrequired by graphics arts applications. A common method of obtainingsuch gray levels involves the use of a halftone screen which causes theprinting of dots having various sizes depending upon the gray level ofthe area represented by the dots. In facsimile applications wherein ahalftone screen may not be employed, other gray level reproductiontechniques have been used as described for example in Ranger, U.S. Pat.No. 1,848,840, Ernst U.S. Pat. No. 3,197,558, Young U.S. Pat. No.3,294,896, McConnell U.S. Pat. No. 3,629,496, or in Klensch U.S. Pat.No. 3,580,995.

Another type of gray level reproduction to which this inventionparticularly relates is shown in Behane et al. U.S. Pat. No. 3,604,846.In the Behane patent gray level reproduction is accomplished by placingvarious numbers of uniformly sized dots within the cells oftwo-dimensional matrix. As described in detail in the Behane patent, anoriginal representation such as a photographic negative or film positiveis scanned optically, and density variations are reproducedelectrically, converted to digital information, and recorded. Therecorded information is then processed in a computer; the outputproduced being digital information representing a series of dots asrequired to construct a matrix print of appropriate optical density. Thedigital output information may be used to control any convenient ON/OFFmarking device but preferably there is employed a binarily switched inkjet recorder as also disclosed in the Behane patent.

A significant limitation of an image reproduction system as disclosed inthe Behane patent is the limited number of gray levels which may beobtained from a matrix of given size. For instance, a 3 by 3 matrix canonly produce a total of only 10 gray levels, although most of the graylevels may be represented by several different dot arrangements. Inthose applications wherein more gray levels require reproduction it isnecessary to increase the size of the matrix. Thus by increasing thematrix size to an 8 by 8 arrangement it becomes possible to reproduce atotal of 65 gray levels running from white to black. Unfortunately,however, the matrix which is used for gray level reproduction is alsothe basic resolution element of the system, so that as the matrixincreases to accommodate additional gray levels, the system resolutiondecreases. For instance the above mentioned 3 by 3 matrix which canaccommodate 10 gray levels has a resolution of about 48 lines per inchwhen using a spacing of 0.0035 inches between matrix cells. On the otherhand a 4 by 4 matrix of similar cell size gives 17 gray levels, but theresolution drops to about 36 lines per inch. Obviously this situationcan be improved by decreasing the size of the matrix cells, but thisalso requires a decrease in the size of the printed dots. At this timeit is not practical to produce a jet drop recorder which will print dotsof a size very much smaller than about 0.0035 inches in diameter.Accordingly there has existed a requirement for a system which canreproduce a large number of gray levels in matrix form, but withoutundue degradation in resolution.

SUMMARY OF THE INVENTION

This invention enables reproduction of any desired number of gray levelsby a dot matrix recorder while maintaining the resolution affordable bya small basic matrix such as by a 2 by 2 matrix. The conflictingrequirements associated with high resolution recording and wide rangegray scale reproduction are met by utilizing dot matrix groupscomprising smaller dot matrices. The dot matrices which comprise anysuch group collectively enable reproduction of any one of a relativelylarge number of different gray levels, and when adjacent points withinan original image have about the same optical density, then theseadjacent points are collectively represented by such a matrix group.However, when adjacent points within the original image do not have thesame optical density, then each point is represented by a single dotmatrix selected from a dot matrix group of the appropriate gray level.In this latter case the system reproduces the optical densities of thetwo adjacent points only very approximately, but large changes inoptical density are visibly apparent. Thus the system has relativelyhigh resolution in image areas of high information content and accurateoptical density reproduction in image areas of low information content.

Further in accordance with this invention the above mentioned dotmatrices and dot matrix groups are reproduced by an ON/OFF recorderwhich may be a binarily switched ink jet recorder. Switching signals forthe recorder may be generated by a magnetic tape or other marker controlrecord carrying information bits arranged in correspondence with themarks which are to be made by the recorder. The bits recorded on themarker control record in turn are selected from bit patterns arranged incorrespondence with the above mentioned dot matrix groups. These bitpatterns are stored in a string within a suitable storage device and areretrieved on the basis of the optical densities of the points beingreproduced. The selection of bits from these bit patterns is made inaccordance with point to point changes in optical density. That is,whenever adjacent points have sufficiently similar optical densities tocall for bit selection from the same bit pattern, then different bitsare selected from the bit pattern in accordance with a predeterminedsequence. This sequence continues until all bits within the bit patternhave been selected. Thereafter if there are more adjacent points havingoptical densities calling for bit selection from still the same bitpattern, than the sequence begins again.

Still in accordance with this invention there may be provided aplurality of strings of the above mentioned bit pattern, with eachstring representing the same set of gray levels, but by bit arrangementswhich differ from string to string. In applications wherein a pluralityof strings of bit patterns are placed in storage there is made a stringselection for each point to be reproduced, and an appropriate bitpattern is retrieved from this string. By this means it is possible toreduce patterning or moire effects. Preferably there are provided atleast two such bit pattern strings for alternate usage in printing ofeven and odd numbered lines, and even more preferably eight or more bitpattern strings are provided. In the case wherein there are eight bitpattern strings, then the eight strings are divided into two groups foreven and odd line printing. Selection from among the four bit patternstrings available for controlling the printing of a point in any givenline may then be made on the basis of the optical density of the fourpoints adjacent the point being printed. As an alternative, however, aselection from among a group of bit pattern strings available forcontrolling the printing of any point may be made in accordance with arandom process.

It is accordingly an object of this invention to provide dot matrixrecording apparatus which is able to record with high resolution inimage areas of high information content and with accurate gray levelreproduction in image areas of lower information content.

It is another object of this invention to provide apparatus and methodfor dot matrix recording with reduced patterning effects.

Still another object of this invention is to provide improved controlmeans for a binarily switched ink jet recorder.

A further object of this invention is to provide improved apparatus andprocess for converting an optical density record into a marker controlrecord.

Other objects and advantages of the invention will be apparent from thefollowing description, the accompanying drawings and the appendedclaims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIGS. 1A and 1B illustrate 4 sets of dot matrix groups for gray levelreproduction;

FIG. 2 illustrates the component matrices of a matrix group;

FIG. 3 is an enlarged illustration of a dot matrix group as it mayappear in printed material;

FIG. 4 illustrates a typical ink jet recorder for use in connection withthis invention;

FIG. 5 illustrates scanning apparatus for producing an optical densitytape;

FIG. 6 illustrates apparatus for converting an optical density tape to amarker control tape; and

FIGS. 7A through 7E present a logic flow diagram for converting anoptical density tape to a marker control tape.

FIGS. 8A and 8B present a block diagram of internal computer componentsas connected for operation as a format converter.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

The preferred embodiment of this invention may reproduce gray scales byusing one or more sets of dot matrices such as matrices A, B, C and D ofFIGS. 1A and 1B. Each of these matrix sets comprises "non special"matrix groups 10 and "special" matrix groups 11 through 14. The matrixgroups 10 through 14 all represent gray levels as indicated, but thematrix groups are not recorded as entire groups. Instead the gray scalereproduction is performed by recording smaller 2 by 2 matrices 15 whichare selected from the larger matrix groups in accordance with a methoddiscussed in detail below.

The recording of matrices 15 may be performed by any convenient ON/OFFdot marker, but preferably there is employed a digitally switched inkjet recorder as generally illustrated by FIG. 4. This apparatus, whichis described in detail in Behane et al. U.S. Pat. No. 3,604,846 includesa drop generator 40, a rotating drum 41, a tape unit 42, a memory 43, anoutput shift register 44, and a control unit 45. The tape unit 42 readsa marker control tape 24 (FIG. 6) which contains information bitscorresponding to dot arrangements in dot matrices 15, and loads theseinformation bits into memory 43. The control unit controls the unloadingof memory 43 into output shift register 44 for charging control of acharging electrode 46.

Control unit 45 also controls the speed of a drive motor 47 and theoperating frequency of a stimulation transducer 48. Stimulationtransducer 48 vibrates the drop generator 40 to cause breakup of an inkfilament 49 into a stream of uniformly sized and regularly spaced drops50. Drops 50 are charge coded in accordance with the information shiftedout of shift register 44. Whenever a "1" is shifted out of register 44 acorresponding drop 50 is inductively charged by electrode 46, andwhenever a "zero" is shifted out of register 44 a corresponding drop 50separates from filament 49 in an uncharged condition. All of drops 50pass between a pair of deflection electrodes 51, and those of drops 50which are charged are deflected into a catcher 52.

A recording sheet is mounted on drum 41 for rotation therewith so thatthose of drops 50 which are uncharged deposit thereon. There is astepping motor, not shown, which steps the ink generating and chargingapparatus longitudinally of drum 41 once each revolution. Thus the drops50 which are uncharged are able to reproduce any desired dot matrixpattern. It will be noted, however, that the 4 bits of informationrequired for reproducing a 2 by 2 dot matrix cannot be loadedconsecutively in shift register 44. In general 2 of these 4 bits will beloaded for consecutive shifting out from register 44 and the other 2bits will be loaded for shifting out at the same point during the nextrotation of drum 41. In a typical case wherein 16384 printing cells passunder drop generator 40 during each rotation of drum 41, the two bitpairs will be separated in storage by 2048 byte locations. In this waythe recorder can record part of a 2 by 2 matrix during one revolution ofdrum 41 and complete the matrix during the next succeeding rotation.

Marker control tape 24, which controls, the pattern to be recorded bythe recorder may be generated by apparatus as shown generally in FIG. 6.This apparatus, which includes a read head 21, a format converter 22,and a record head 23, reads an optical density tape 20 and converts thedata so read into what may be termed bit matrix form. Optical densitytape 20 in turn may be generated by apparatus such as that illustratedgenerally in FIG. 5, but tape 24 could be generated directly withoutgeneration of the intermediate tape 20.

The tape generating apparatus of FIG. 5 is already known in the art andis described in detail in Cahill U.S. Pat. No. 3,629,495. For anunderstanding of this invention it is sufficient to note that theapparatus generally comprises a scanning unit 25 having a table 32 whichis driven in two coordinate directions by a pair of drive motors 27 and28. An image carrying film 26 is mounted on table 32 for illumination bya light source 33, and the light which passes therethrough is sensed bya sensor 29. Sensor 29 generates an analog output signal which isdigitized, formatted, and recorded by a recorder 30, all under thecontrol of a control unit 31. As a result there is produced the opticaldensity tape 20 which carries optical density information in digitalform. The position of each digital word on tape 20 corresponds to the X,Y position of an associated point on the transparency 26.

Format converter 22, which converts the optical density information ontape 20 into bit matrix information for marker control tape 24, may be aspecial purpose digital computer or a general purpose digital computersuch as for instance an IBM 370 computer adapted for the O.S. operatingsystem. To operate as a format converter the computer is programmed soas to be internally configured for performing the operations outlined bythe flow chart of FIGS. 7A through 7E. In general the sequence involvesreading an optical density, selecting one of matrix sets A, B, C, or Dof FIGS. 1A and 1B, picking out from the selected matrix set a matrixgroup corresponding to the optical density which has been read, and thenrecording a bit pattern corresponding to one of the 4 or more 2 by 2matrices within the matrix group.

In general the matrix groups 10 through 14 of FIGS. 1A and 1B may bethought of as being similar to the matrices disclosed in the abovementioned Behane et al. patent. Such matrix groups may record as manydiscrete gray levels as desired by merely increasing the group size. Inaccordance with this invention the gray level capability of such largematrix groups is achieved without concomitant loss of resolution byrecording on the above mentioned 2 by 2 matrix basis. That is, therecorder records from 0 to 4 dots within a 2 by 2 matrix as required bythe density level being reproduced and will shift to a new dot patternfor the next 2 by 2 matrix. In image areas containing relatively littledetail the 2 by 2 matrices will combine to produce the larger matrixgroups.

A typical "non special" matrix group 10 is illustrated in enlarged formin FIG. 2. Such a matrix group 10 is seen to comprise four matrices 15which are designated in FIG. 2 as I, II, III and IV. Each of thesematrices 15 is a 2 by 2 matrix, that is, it comprises four matrix cellsarranged in two rows of two cells each. The number and position ofprinted dots within any 2 by 2 matrix depends upon the group 10 to whichthe matrix 15 belongs as well as the position of the matrix within thematrix group. As mentioned above the matrix groups 10 through 14 arearranged into 4 sets A, B, C and D. Each of sets A through D comprises17 matrix groups 10 for representation of 17 different gray levels andfour larger matrix groups 11 through 14 for representation of fouradditional gray levels which are treated as special cases.

In accordance with this invention each new matrix 15 which is printed bythe printer may belong to a different matrix group, so that theresolution afforded by a 2 by 2 matrix is preserved. Thus one matrix 15may belong to a 0% gray scale group 10 and have no printed dots, whilethe next matrix may belong to a 100% gray scale group 10 and have fourprinted dots. This may be followed by another 0% gray scale matrix andso on.

Four adjacent matrices as illustrated by FIG. 2 cooperatively mayreproduce any one of 17 different gray levels ranging from white toblack. This is accomplished in accordance with the basic 2 by 2 schemeby assigning to each matrix 15 a designation I, II, III or IV dependingupon the matrix position within the group 10. This designation may bemade conveniently with reference to the position of the 2 by 2 matrixwithin the overall image being reproduced. Thus all matrices whichoccupy odd numbered positions within odd numbered print lines may bedesignated I, whereas even numbered matrix positions within odd numberedprint lines may be designated II. For even numbered print lines the oddand even numbered matrix positions may be designated respectively IIIand IV.

The sequence for determining dot placement within any 2 by 2 matrixinvolves giving the matrix a designation as above described and also agray scale group assignment. If for instance a matrix is designated III(odd numbered matrix position within an even numbered print line) andthe associated matrix group is the 30% gray level group of set A, thenthere will be printed a single dot in the lower right hand cell of thematrix. It is apparent that the next matrix within the same printingline (left to right print direction) will be designated IV, so that ifthe required gray level is again 30% (and still assuming set Amembership), then no dot will be printed in any of the four matrixcells. If the same conditions had obtained during the printing ofmatrices I and II of the line immediately above, then there would havebeen printed a dot in the lower left hand cell of matrix I and a dot inthe upper right hand cell of matrix II. Thus the four adjacent matricesI through IV collectively will have dots printed in 3 of 16 possiblecells. In reality the printed dots are somewhat larger than illustrated,so that 3 printed dots in a matrix group 10 actually represents a graylevel of about 30%. A similar procedure is followed for printing of allof the other matrix groups 10. Again, it is emphasized that matrices Ithrough IV may all belong to different gray level groups 10, which meansthat if a matrix I is to print at a 30% gray level (still assuming setA) and the next printed matrix on the same line is to print at the 65%gray level, then the first matrix will have a printed dot in its lowerleft hand cell and the next matrix (this being a matrix designated II)will have printed dots in both of its upper right and lower left cells.If the same 30 and 65% gray levels apply to the adjoining matrices inthe printing lines immediately below, then there will again be selectionof matrix patterns from different matrix groups, but this time thematrix designations will be III and IV. Such an arrangement of fouradjoining matrices is illustrated in FIG. 3.

As mentioned above there are four special cases represented in each ofsets A through D by matrix groupings 11, 12, 13 and 14. These specialgroupings enable the reproduction of gray levels of intermediate value,which cannot be reproduced by a four-matrix group such as the groups 10.The groups 10 enable reproduction of 17 gray levels from white to black,but by addition of special case groups, it is possible to reproduce asmany gray levels as may be desired. Of course, the intermediate levelsrepresented by the larger matrix groups provide accurate gray scalereproduction only in imaging areas having sufficient space for printingof the entire matrix group which represents that gray level. Asdescribed in more detail with regard to FIGS. 7A through 7G, the specialcase matrix groupings may be printed by simple extension of theprocedure employed for printing of a non-special group 10.

Referring again to set A of FIGS. 1A and 1D, and noting in particularmatrix group 12, it will be seen that a 15% gray level may berepresented by printing one dot in each of the second and sixth matrices15 in a group of six consecutive matrices in an odd numbered print line,and then printing a dot in the third matrix of the print linetherebelow. However, if there are less than 6 consecutive points forwhich the recorded gray level is to be 15%, then only a part of thematrix group 12 is printed. The logic for accomplishing this partialusage of matrix group 12 is discussed below in connection with thedescription of FIG. 7E.

The four matrix sets A through D of FIGS. 1A and 1B are provided toavoid patterning effects, commonly called moire patterns, which resultif a given gray level is always represented by the same dot pattern.There are therefore 84 different dot patterns stored in the computer forrepresentation of the 21 different gray levels. The dot patternsemployed by the different matrix groups may be arranged in a largenumber of different ways as desired for graphic quality of the imagerybeing reproduced, and the dot patterns illustrated in FIGS. 1A and 1Bare merely representative. However, the patterns as illustrated havebeen found to provide reasonably high quality reproduction of a varietyof types of images.

As noted above, whenever it is desired to print any particular graylevel, selection may be made from one of four available matrix groups.To avoid inadvertent patterning effects it is desirable not to employmatrix groups from sets A, B, C and D in any repetitive sequence.Therefore, in accordance with this invention a matrix group selection ismade on the basis of the optical density of the image points adjoiningthe point for which a matrix selection is being made. If the adjacentimage point of greatest optical density is above the point of interest,then there will be recorded one of the 2 by 2 matrices from theappropriate matrix group within matrix set D. If the neighboring imagepoint of greatest optical density is to the left of the point underconsideration, then selection is made from set C. Selection is made fromsets B and A for neighboring points of greatest optical densityrespectively below and to the right. It will be apparent that there maybe employed more than four sets of matrix groupings and that othermethods could be employed for set selection in connection withrepresentation of gray levels at points within an image. For instanceselection of a set could be made on a random basis by matching setnumbers with numbers generated by a random process.

Referring now to FIGS. 7A through 7E there will be seen a flow chart fora computer program which may be employed in connection with the abovedescribed tape conversion. FIG 7A is a general flow chart including aprogram macro entitled BIKCON. FIGS. 7B through 7E present a flow chartfor the BIKCON macro. The first step in the program illustrated by FIG.7A is to read a gray scale into computer storage. This step causesdesignation of optical density ranges for each of the discrete graylevels which will be printed. In one successfully operated embodiment ofthe invention there are 256 such levels coded in digital form intodensity numbers ranging from 0 to 255. However, the reproduction processas described above in connection with FIGS. 1A and 1B permits printingof only 21 different gray levels (with capability for representing eachof these gray levels by as many as four different dot patterns). Thusthe "read gray scale" step involves setting up a table of opticaldensity values corresponding with each of the dot matrix patterns to beprinted. For example, it may be desirable to print one of the zeropercent matrices of FIG. 1A whenever the input tape contains an opticaldensity number in the range between 0 and 8. Similarly an appropriate 5%dot pattern may represent optical density numbers ranging between 9 and18. The program allocates the entire 256 optical density levels to the21 possible gray levels provided by the program. In general the humaneye is more sensitive at the white end of the gray scale, so provisionis made for "spreading out" the density levels at the lower end of thegray scale.

After the gray scale has been read into the computer, it is convenientto print out this data for documentation purposes. Thereafter theprogram sets up what is designated the CONVTAB table, which is in effectmerely the reverse of the above mentioned gray scale table. Thus eachtime the computer is called upon to convert a new optical density, thereis immediate selection of the appropriate one of the 21 possible printedgray levels.

The "read parameter data" step is a step wherein there is designated theportion of the input tape which is to be read. This makes it possible toprint only a portion of a large image which may be represented by inputtape 20. Thus the parameter data which is read in this step is datarelating to the grid coordinates of the area to be printed.

After reading in of the parameter data the program sets up input andoutput blocks and determines whether any input tape records are to beskipped. Following this the program reads the first 2 records from theinput tape. These 2 "records" are the optical density data for the firsttwo image lines to be printed. Thereafter the program reads anotherrecord and continues reading 1 record at a time so that there are alwaysthree records in memory. This enables comparison of optical density atany point within a line with the optical density at adjacent points inthe lines immediately above and below the line of interest.

After 3 records are read into memory, the program clears the outputregister to erase bit patterns generated by the previous program loopand proceeds to call the BIKCON macro. As illustrated by FIG. 7B theBIKCON macro begins by saving index registers in a save area so thatthey may be restored before returning to the calling program. The nextstep is to set into register 3 the address of the first density value inthe row of densities to be coverted to bit patterns. Similarly register2 is set to be the address of the first element in the preceding row,and register 4 is set to the address of the first element in the rowimmediately below the row to be converted. Register 5 is set to thenumber of elements in the record or row which is to be converted to bitpatterns, and is used as a counter. Each time an optical density isconverted into a matrix bit pattern the count in register 5 is decreasedby one, and the counts in registers 2, 3, and 4 are all increased by anamount equal to the length of a density value word (8 bits). When thecount in register 5 is zero, then the program exits from the BIKCONmacro, reads a new record from the input tape, reenters BIKCON resetsregisters 2, 3, and 4, and begins converting density values for the newrecord.

The next step as illustrated in FIG. 7B is to set register 6 to theaddress of the first byte in the output area. Register 6 is a counterwhich controls the loading of the output area, which in one embodimentmay accept 32,768 bits of data corresponding to the 32,768 dot printingpositions which will be passed during two scan lines of the recorder ofFIG. 4. Register 5 is reset each time the BIKCON macro is entered.

The bit patterns corresponding to matrix sets A, B, C or D are stored ineight strings; two strings for each of sets A, B, C and D. One stringfor each set contains bit patterns to be used in odd numbered printingrows (i.e. bit patterns for matrices corresponding to matrices I and IIof FIG. 2), and the other string contains bit patterns to be used ineven numbered printing rows (i.e. for matrices III and IV). For each ofthe eight strings of bit patterns there is an associated pointer whichpoints to or designates the storage location of the first bit in thestring. The pointers in turn are divided into two groups; one group forthe odd lines and the other group for the even lines. The pointer groupsare alternated each time the BIKCON macro is entered so that the correctbit patterns will be selected for odd and even numbered lines. Thus thefirst time through the BIKCON macro the odd numbered pointer group willbe used, and consequently each time one of matrix sets A, B, C, or D iscalled for, the pointer will point to the bit-pattern string for theupper half of the appropriate matrix set. The next time through BIKCONthe other set of pointers will be used and will call for bit patternstrings for the lower portions of the matrix sets. This alternationcontinues throughout the entire program.

Continuing with the chart on FIG. 7B, after the pointers have beenalternated, register 11 is set to the starting address of the CONVTABtable. Then the program sets register 12 to four. Register 12 controlsselection of a mask as described below and is decremented twice eachtime a new density value is converted to a matrix bit pattern. There arefour masks employed and register 12 is reset to four every other time anew density value is read.

After setting of register 12 the program enters a loop which will befollowed for each input density that is to be converted to a bitpattern. First the density value is loaded into register 9. Then thecontents of register 9 are added to the contents of register 11 and thesum thereof is used for entry into the CONVTAB table. The output fromthe CONVTAB table is a coded binary number corresponding to one of the21 gray levels which are reproducible by matrix sets A, B, C and D. Thiscode is stored in register 10. After the CONVTAB table output has beenstored in register 10 the program checks to see if this is a specialcase. The special cases are the density values being converted to the 5percent 15 percent, 25 percent or 35 percent gray levels, each of whichis represented by its own binary code word in register 10. Theseparticular gray levels are represented by the matrix groups 11, 12, 13,and 14 of FIG. 1A. If the program determines that it is working on aspecial case it continues along the flow. path shown in FIG. 7B.However, if the program determines that it is not working on a specialcase it enters the logic path beginning at the top of FIG. 7C.

In general the logic for the special cases is quite similar to the logicfor the non special cases as set out in FIG. 7C. In the typical nonspecial case the selection of a bit pattern corresponding to one ofmatrices 15 within a matrix group 10 from one of matrix sets A, B, C, orD begins by setting in register 9 the address of the storage locationfor the first bit pattern of the string of bit patterns corresponding tothe matrix set D. Then register 7 is set equal to the optical densityvalue for the corresponding point in the preceding record (as notedabove the program reads into storage both the record preceding and therecord following each record being converted to bit patterns), andregister 8 is set equal to the optical density value for the pointimmediately preceding (to the left of) the point for which a bit patternis being generated. The program then checks to determine whether thedensity value stored in register 8 exceeds the density value stored inregister 7. In effect this step determines whether the optical densityfor the point to the left of the point of interest exceeds the opticaldensity for the point immediately above the point of interest. If thepoint to the left has an optical density which exceeds the opticaldensity to the point above, then register 9 is set with the address ofthe storage location for the first bit pattern of the string of bitpatterns corresponding to the matrix set C. Also in such event register8 is set equal to the optical density for the point to the right of thepoint of interest, and register 7 is set equal to the optical densityfor the point to the left of the point of interest. If, however, theoptical density for the point to the left of the point of interest doesnot exceed the optical density of the point above the point of interest,then the contents of registers 7 and 9 are left unchanged, and register8 is set equal to the optical density of the point to the right of thepoint of interest. The program then continues with the logic sequenceshown in FIG. 7C until it reaches the step entitled "ADD R9 AND R10".When the program has reached this point, register 9 has been set withthe address of the storage location for the first bit pattern of a bitpattern string corresponding to the upper or lower portion of one ofmatrix sets D, C, A, or B depending upon whether the point of interestis in an odd or even line and whether the adjacent point of greatestoptical density is respectively above, to the left, to the right, orbelow the point of interest.

Each of the bit pattern strings which may be pointed to by register 9contains a bit pattern for each of the non special case gray levels anda plurality of bit patterns for each of the special case gray levels.The actual number of bit patterns associated with a special case graylevel depends upon the size of the corresponding matrix group asillustrated in FIG. 1A. Thus the matrix groups 11, which represent a 5%gray level, are twice the size of matrix groups 10 and are thereforerepresented by 2 bit patterns. Similarly the matrix groups 12, 13, and14 are three times the size of matrix groups 10 and accordingly arerepresented by 3 bit patterns. As discussed below, each bit patterncontains enough information for recording two side by side matrices 15,so a group of bit patterns associated with one of matrix groups 11 maycontrol gray level recording for as many as 4 side-by-side points havinga 5% gray level. In the case of the bit pattern groups associated withmatrix groups 12, 13, and 14, there is stored sufficient information forgray scale control of as many as 6 side-by-side points to be recorded.

It will now be understood that each of the eight bit pattern stringscontains a total of 28 bit patterns for representing the upper or lowerhalf of recorded areas having any one of 21 different gray levels.Further it will be seen that the code stored in register 10 is merely apointer which points to a bit pattern position within a bit patternstring. Thus if the above mentioned CONVTAB table entry has produced a0% gray scale result, then the code stored in register 10 will be 0. Fora 5% gray scale the code will be 1, and for a 10% gray scale the code is3 (since two bit patterns are required for representation of a full 5%gray scale area). The codes for each of the other gray levels may beeasily determined by referring to FIGS. 1A and 1B and merely countingpairs of 2 by 2 matrices from left to right (but noting as abovementioned that the first pair of matrices is assigned the code number 0).

Now returning to FIG. 7C, it will be seen that the step entitled "ADD R9and R10" results in a number which points to the storage location of abit pattern which meets the above mentioned gray scale and matrix setcriteria. This bit pattern may be an 8-bit word with zeros and onescorresponding to the 8 matrix positions in matrices I and II of FIG. 2(pointers of FIG. 7B set for an odd line) or the 8 matrix positions inmatrices III and IV (pointers set for an even line). However, only 4 ofthese bits will be moved to the output area, and these 4 bits will bemoved out as pairs in two separate steps. If the point for which a grayscale conversion is being made is an odd numbered point within its line,then the first and third pairs of bits from the 8-bit pattern will betransferred, while the second and fourth pairs of bits will betransferred in the case of a point occupying an even numbered positionin within its line.

The transfer of the appropriate bits from the selected bit pattern iscontrolled by a masking routine wherein one of four masks (as pointed toby register 12) is matched against the bit pattern on an AND gatingbasis. The four masks have bit values of 11000000, 00001100, 00110000,and 00000011 corresponding respectively to an odd point (top two cells),an even point (top two cells), an odd point (bottom two cells), and aneven point (bottom two cells). The first time through the loop register12 is set to 4 as mentioned above. This causes selection of the mask11000000, and consequently the first two bits will be gated out of theselected bit pattern. These will be the bits for the top two cells of amatrix I, since the first point converted is an odd numbered pointwithin an odd numbered line. For the special case illustrated in FIG. 3these two bits will be zeros, and placement of those two zeros in theoutput area will be controlled by the address set into register 6.

After the first two bits are transferred into the output area the countin register 12 is decreased by 1 to select the mask 00001100. This maskthen is used to gate out from the selected bit pattern a second pair ofbits for controlling the marking of the bottom two cells of the matrixI. Again referring to the example of FIG. 3, the bit pair will be "1,0".This pair then is also transferred to the output area, but it will notbe stored adjacent to the first above mentioned bit pair. The reason forthis is that the recorder, as above described, records only one row ofcells at a time; two complete revolutions of drum 41 being required forrecording the row of matrices 15 which correspond to one scan lineacross the transparency 26. Thus the second bit pair is displaced instorage 2048 byte locations from the first bit pair.

After the second bit pair has been transferred to the output area thecount in register 9 is again decreased, so that the next time throughthe loop the program will utilize the two "even point" masks. As shownby FIG. 7C, the program resets register 12 back to a count of 4 wheneverthe count therein reaches zero (which can happen only after the secondmasking operation of any program loop). Then after checking the settingof register 12, the program returns to the point AB6 of FIG. 7B forconversion of the next density value. This looping back for conversionof new density values continues until the last point in the print lineis reached. Thereafter the program exits from the BIKCON macro andreturns to the main program illustrated on FIG. 7A. The main programthen causes the converted data to be recorded on marker control tape 24,and a new record is read from optical density tape 20.

It will be understood that the loading of data bits into the output areapresents centain problems which have not been mentioned in the abovediscussion. In particular the output area for the case of this examplecontains storage for 4096 8-bit bytes representing printing controlinformation for two lines of 16,384 marking cells each, and only these4096 byte locations may be individually addressed. Thus it is necessaryto take special steps to load the above mentioned bit pairs into thecorrect positions within the output data bytes. For each output databyte this involves taking the 8-bit words which result from the abovedescribed masking process and matching those words on an OR basisagainst the data already in the output data byte. Initially, thereforeeach output data byte has the form 00000000 and this is matched againsta word having the form XX000000, where each X denotes either a zero or aone depending upon the information content of the bit pair, which hasbeen masked out from one of the above mentioned bit patterns. Thisproduces a word of the form XX000000, which is then matched on an ORbasis against a new word having the form 00XX0000 and derived fromanother masking step. The process continues until the output data byteis filled.

Now referring back to the discussion of the masking process whichproduces bit pairs for the output area, it will be seen that while thefirst masking operation produces a word of the form XX000000, the nextmasking operation produces a word of the form 0000XX00. The bitsrepresented by these latter X's must be loaded into output data bytemember 2049, and they must be loaded into the first two positions withinthat byte, if registration of the printed dot matrix is to be achieved.Accordingly the data bits resulting from the second masking step must beshifted to produce a new word of the form XX000000 for OR gating andloading into byte No. 2049. Following through with the loading of theoutput area, it will be seen that additional bit position shifting isrequired as pairs of bits are alternately loaded into output bytes 1 and2049. Thereafter a similar procedure is followed in loading output bytes2 and 2050, and so on until bytes 2048 and 4096 have been filled.

As an alternative to the above mentioned bit position shifting, theinformation within the bit patterns can be repeated so that a patternwith 8 positions 1, 2, 3, 4, 5, 6, 7, 8 is transformed into twocorresponding patterns or words A and B wherein the information in wordA corresponds to pattern positions 1, 2, 3, 4, 1, 2, 3, 4 while theinformation in word B corresponds to pattern positions 5, 6, 7, 8, 5, 6,7, 8. These words may then be alternately masked in sequence by masks ofthe form 11000000, 11000000, 00110000, 00110000, 00001100, 00001100,00000011, 00000011. The data bytes which are obtained by AND gatingagainst the above masks in the stated sequence may then be OR gated onan alternate basis directly into output data bytes which are separatedin storage by 2048 locations. Obviously if this alternate procedure isemployed, then certain minor modifications must be made to the logicsequence outlined in FIG. 7C. The internal computer connections as abovedescribed for accomplishing format conversion in non-special cases isillustrated in block diagram form in FIGS. 8A and 8B.

Referring again to FIG. 7B, whenever the code in register 10 indicatesthat the program is converting a "special case" optical density, thenthe program checks to ascertain whether it is working on the last pointin a line. If so, or if the next point converts to a different matrixpattern, then the program again follows the logic of FIG. 7C which willresult in a matrix conversion based upon only the first bit pattern inthe bit pattern group associated with the special case gray scale.

If it is determined that the program is not working on the last point ina line and if the next point converts to the same pattern, then register9 is set equal to 2. Thereafter the program continues checking ahead forother points which convert to the same pattern and adds one to register9 for each such point. Thus register 9 keeps track of the number ofpoints which convert to the pattern being generated. When register 9 isset equal to four, then the program checks to determine whether the codestored in register 10 is equal to one. If this code is equal to one, itmeans that a 5% gray level is to be printed, and therefore only four 2by 2 matrices will be required for representation of the gray level. Ifthe code in register 10 is not equal to one when register 9 is equal to4, then register 9 continues to be incremented until one of three eventsoccurs. These three events are: reaching the end of a print line,reaching a point which does not covert to the same pattern, and reachinga condition wherein register 9 is equal to 6. When any one of theseevents occurs the program branches to the routine illustrated generallyat FIG. 7D.

In general the logic of FIG. 7D is very similar to the logic of FIG. 7Cwhich has been discussed above. The object of the routine illustrated inFIG. 7D is to set into register 11 the address of the storage locationfor the first bit pattern of a bit pattern string corresponding to oneof matrix sets A, B, C, or D. The matrix set which is chosen will dependupon whether the adjacent area of greatest optical density is to theright, below, to the left, or above the special case points underconsideration. For the "non special" cases as discussed above, theprogram only examines the optical density for 4 points adjacent a pointof interest. However, in the special cases for which the logic of FIG.7D applies, there must be an examination of the optical density for onepoint to the left, one point to the right, as many as 6 points above,and as many as 6 points below the area of interest. The contents ofregister 9 specify the number of consecutive points which will beconverted together, and this in turn determines the number of pointsabove and below over which density values must be averaged. The specialcase routines for determining the 4 adjacent optical densities are namedSPUPPER, SPLOWER, SPRIGHT, and SPLEFT.

After the special case routine has selected a bit pattern stringcorresponding to the correct one of matrix sets A, B, C, or D and hasstored the appropriate address in register 11, then the program bumps upregister 3 to the next input point which will require conversion uponcompletion of the special case routine. Again the contents of register 9indicate how far ahead register 3 should be bumped. Thereafter theprogram proceeds as illustrated by FIG. 7E, to move the correct bitpairs to the output area.

The first step in the bit pattern movement sequence is to set register14 equal to 2, and this is done for reasons which will presently becomeapparent. Then the address of the first bit pattern to be moved to theoutput area is determined by adding the contents of register 11 to thecontents of register 10. Actual movement of bit patterns is accomplishedin a manner similar to the movement described above in connection withthe "non special" cases. However, for the special cases it is necessaryto move additional bit patterns to the output area, the number of suchtransfers depending upon the number which is stored in register 9.

The program proceeds with the bit transfer by first reading out thecorrect bit pattern (eight bit word) from one of the above mentionedeight bit pattern strings, and the address of this bit pattern isdetermined by adding the contents of registers 10 and 11. This bitpattern is masked twice by the above mentioned masks to obtain two bitpairs (again representing masking information for the upper and lowercells of a 2 by 2 matrix), and the bit pairs are transferred to theoutput area. Again it is necessary to follow a bit position shiftingroutine, unless there is followed an alternate masking procedureanalogous to the procedure described above in connection with the "nonspecial" case.

After the first two bit pairs have been transferred, and the count inregister 12 (which again points to one of the 4 masks) has beencorrespondingly decreased, the program repeats the loop to pick up theremaining two masks and transfers two more bit pairs to the output area.This double looping is required, because, as mentioned above, each bitpattern contains matrix data for two adjacent 2 by 2 matrices. Each timethrough the loop the program decreases the count in register 9, and whenthis count goes to zero, the special case has been completed.

After the program has looped twice through the routine of FIG. 7E,register 10 is bumped up to cause reading out of a new bit pattern. Thusfor those special cases wherein register 9 starts with a count of 6,register 10 will be bumped up 3 times and 3 bit patterns will be readfrom sequential locations within the storage for the selected bitpattern string. In order to cause bumping up of register 10 only everyother time through the loop, the count in register 14 is adjusted asillustrated and the program performs the bumping only when the count inregister 14 is zero.

The entire process as discussed above with reference to FIGS. 7A through7E continues until all of the optical density data has been read outfrom tape 20 and has been converted to marker control data for tape 24.It will be appreciated, however, that the marker control data which isso generated need not be recorded on marker control tape 24, but couldbe used for direct control of a recorder such as the recorder of FIG. 4.For such an alternative embodiment it would be necessary only that readhead 21 read the optical density tape 20 in synchronism with the motionof the marking recorder and that format converter 22 operate at a speedcompatible therewith. Also as mentioned above the scanner of FIG. 5could generate marker control tape 20 directly, or in still anotherembodiment the scanning apparatus and the marking recorder could both beconnected to format converter 22 for on-line control of the dot markingprocess.

Tables I and II below contain a program listing for a computer programwritten in accordance with the flow charts of FIGS. 7A through 7E. TableI is a listing for the main program as set forth by FIG. 7A and iswritten in Fortram IV G, Level 21. Table II is a listing for the BIKCONmacro as set forth by FIG. 7B through 7E and is written in IBM AssemblyLanugage. The program as listed in Tables I and II has been successfullyrun on an IBM 370 computer system and has produced output tapes (markercontrol tapes 24) which in turn have controlled an ink jet recordingsystem of the type shown in FIG. 4. Under such control the ink jetrecorder successfully reproduced images in accordance with thisinvention.

While the methods herein described, and the forms of apparatus forcarrying these materials into effect, constitute preferred embodimentsof the invention, it is to be understood that the invention is notlimited to these precise methods and forms of apparatus, and thatchanges may be made in either without departing from the scope of theinvention. ##SPC1## ##SPC2## ##SPC3##

What is claimed is:
 1. Improved apparatus for converting a series ofdigital words representative of optical densities within an image atlocations corresponding to the positions of said words in said seriesinto a series of bit sets for control of a dot matrix recordercomprising:(a) first storage means for storing a string of bit patternshaving bits arranged therein in correspondence with dot positions in aset of dot matrix groups, each of which matrix groups is opticallyrepresentative of a predetermined optical density and comprises aplurality of dot matrices, (b) second storage means for storing andreading out of said series of digital words. (c) pattern selection meansfor causing said first storage means to read out bit patterns for matrixgroups corresponding in optical density to the optical densitiesrepresented by the digital words read out of said second storage means,and (d) bit selection means for selecting from said bit patterns sets ofbits corresponding to dot matrices positioned within said matrix groupsin accordance with the positioning of said digital words within saidseries.
 2. Apparatus according to claim 1 wherein said first storagemeans comprises means for storing a plurality of strings of bit patternswhich correspond to sets of dot matrix groups optically representativeof similar gray levels by different dot arrangements, said apparatusfurther comprising string selection control means for causing saidpattern selection means to select the string of bit patterns from whichsaid pattern selection is made.
 3. Apparatus according to claim 2wherein said string selection control means causes string selection onthe basis of optical densities at points adjacent to an image pointbeing reproduced.
 4. Apparatus according to claim 1 wherein said bitselection means selects sets of four bits corresponding to 2 by 2 dotmatrices.
 5. Apparatus according to claim 2 wherein said first storagemeans comprises means for storing a plurality of strings of bit patternswhich correspond to sets of dot matrix groups optically representativeof similar gray levels by different dot arrangements, said apparatusfurther comprising string selection control means for causing saidpattern selection means to select the string of bit patterns from whichsaid pattern selection is made.
 6. Apparatus according to claim 5wherein said string selection control means causes string selection onthe basis of optical densities at points adjacent to an image pointbeing reproduced.